import { Pipe, PipeTransform } from '@angular/core';

@Pipe({
  name: 'jsonFormat'
})
/**
 * JsonFormatPipe 是一个 Angular 管道，用于将输入值格式化为 JSON 字符串。
 * 它支持将字符串类型的 JSON 数据解析并格式化，同时允许指定缩进级别和是否忽略解析异常。
 */
export class JsonFormatPipe implements PipeTransform {
  /**
   * 将输入值转换为格式化后的 JSON 字符串。
   * 
   * @param value - 要格式化的值，可以是 JSON 对象或 JSON 字符串。
   * @param indent - 缩进的空格数，默认为 2。
   * @param ignoreError - 是否忽略解析 JSON 时的错误，默认为 false。
   * @returns 格式化后的 JSON 字符串，如果解析出错且不忽略错误，则返回原始值。
   */
  transform(value: any, indent: number = 2, ignoreError: boolean = false): string {
    try {
      const parsedValue = typeof value === 'string' ? JSON.parse(value) : value;
      return JSON.stringify(parsedValue, null, indent);
    } catch (error) {
      if (ignoreError) {
        return value;
      }
      console.error('Failed to parse JSON:', error);
      return value;
    }
  }
}
